home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / PInterfaces / SANE.p < prev    next >
Encoding:
Text File  |  1992-01-29  |  6.7 KB  |  255 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Friday, September 15, 1989 at 5:01 PM
  3.     SANE.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1985-1991
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT SANE;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingSANE}
  21. {$SETC UsingSANE := 1}
  22.  
  23. {$I+}
  24. {$SETC SANEIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingTypes}
  27. {$I $$Shell(PInterfaces)Types.p}
  28. {$ENDC}
  29. {$SETC UsingIncludes := SANEIncludes}
  30.  
  31. { Elems881 mode set by -d Elems881=true on Pascal command line }
  32.  
  33. {$IFC UNDEFINED Elems881}
  34. {$SETC Elems881 = FALSE}
  35. {$ENDC}
  36.  
  37.  
  38. CONST
  39. {$IFC OPTION(MC68881)}
  40.  
  41. {*======================================================================*
  42.  *    The interface specific to the MC68881 SANE library    *
  43.  *======================================================================*}
  44.  
  45. Inexact = 8;
  46. DivByZero = 16;
  47. Underflow = 32;
  48. Overflow = 64;
  49. Invalid = 128;
  50. CurInex1 = 256;
  51. CurInex2 = 512;
  52. CurDivByZero = 1024;
  53. CurUnderflow = 2048;
  54. CurOverflow = 4096;
  55. CurOpError = 8192;
  56. CurSigNaN = 16384;
  57. CurBSonUnor = 32768;
  58.  
  59.  
  60. {$ELSEC}
  61.  
  62. {*======================================================================*
  63.  *    The interface specific to the software SANE library    *
  64.  *======================================================================*}
  65.  
  66. Invalid = 1;
  67. Underflow = 2;
  68. Overflow = 4;
  69. DivByZero = 8;
  70. Inexact = 16;
  71. IEEEDefaultEnv = 0;     {IEEE-default floating-point environment constant}
  72.  
  73.  
  74. {$ENDC}
  75.  
  76. {*======================================================================*
  77.  *    The common interface for the SANE library     *
  78.  *======================================================================*}
  79.  
  80. DecStrLen = 255;
  81. SigDigLen = 20;         {for 68K; use 28 in 6502 SANE}
  82.  
  83.  
  84. TYPE
  85.  
  86. RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
  87.  
  88. NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
  89.  
  90. RoundDir = (ToNearest,Upward,Downward,TowardZero);
  91.  
  92. RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
  93.  
  94. DecimalKind = (FloatDecimal,FixedDecimal);
  95.  
  96. {$IFC OPTION(MC68881)}
  97.  
  98. {*======================================================================*
  99.  *    The interface specific to the MC68881 SANE library    *
  100.  *======================================================================*}
  101. Exception = LONGINT;
  102.  
  103. Environment = RECORD
  104.     FPCR: LONGINT;
  105.     FPSR: LONGINT;
  106.     END;
  107.  
  108. TrapVector = RECORD
  109.     Unordered: LONGINT;
  110.     Inexact: LONGINT;
  111.     DivByZero: LONGINT;
  112.     Underflow: LONGINT;
  113.     OpError: LONGINT;
  114.     Overflow: LONGINT;
  115.     SigNaN: LONGINT;
  116.     END;
  117.  
  118. {$ELSEC}
  119.  
  120. {*======================================================================*
  121. *  The interface specific to the software SANE library      *
  122. *======================================================================*}
  123.  
  124. Exception = INTEGER;
  125.  
  126. Environment = INTEGER;
  127.  
  128. Extended96 = ARRAY [0..5] OF INTEGER;
  129.  
  130. MiscHaltInfo = RECORD
  131.     HaltExceptions: INTEGER;
  132.     PendingCCR: INTEGER;
  133.     PendingD0: LONGINT;
  134.     END;
  135.  
  136. {$ENDC}
  137.  
  138. {*======================================================================*
  139. *  The common interface for the SANE library    *
  140. *======================================================================*}
  141.  
  142. DecStr = STRING[DecStrLen];
  143.  
  144. DecForm = RECORD
  145.     style: DecimalKind;
  146.     digits: INTEGER;
  147.     END;
  148.  
  149. Decimal = RECORD
  150.     sgn: 0..1;
  151.     exp: INTEGER;
  152.     sig: STRING[SigDigLen];
  153.     END;
  154.  
  155. CStrPtr = ^CHAR;
  156.  
  157.  
  158.  
  159. {$IFC OPTION(MC68881)}
  160.  
  161. { return IEEE default environment }
  162. FUNCTION IEEEDefaultEnv: environment;
  163. PROCEDURE SetTrapVector(Traps: trapvector);
  164. PROCEDURE GetTrapVector(VAR Traps: trapvector);
  165. FUNCTION X96toX80(x: Extended): extended80;
  166. FUNCTION X80toX96(x: extended80): Extended;
  167. {$IFC Elems881 = false}
  168.  
  169. { sine }FUNCTION Sin(x: Extended): Extended;
  170. FUNCTION Cos(x: Extended): Extended;
  171. FUNCTION ArcTan(x: Extended): Extended;
  172. FUNCTION Exp(x: Extended): Extended;
  173. FUNCTION Ln(x: Extended): Extended;
  174. FUNCTION Log2(x: Extended): Extended;
  175. FUNCTION Ln1(x: Extended): Extended;
  176. FUNCTION Exp2(x: Extended): Extended;
  177. FUNCTION Exp1(x: Extended): Extended;
  178. FUNCTION Tan(x: Extended): Extended;
  179. {$ENDC}
  180.  
  181. {$ELSEC}
  182.  
  183. { return halt vector }FUNCTION GetHaltVector: LONGINT;
  184. PROCEDURE SetHaltVector(v: LONGINT);
  185. FUNCTION X96toX80(x: Extended96): Extended;
  186. FUNCTION X80toX96(x: Extended): Extended96;
  187. FUNCTION Log2(x: Extended): Extended;
  188. FUNCTION Ln1(x: Extended): Extended;
  189. FUNCTION Exp2(x: Extended): Extended;
  190. FUNCTION Exp1(x: Extended): Extended;
  191. FUNCTION Tan(x: Extended): Extended;
  192. {$ENDC}
  193.  
  194.  
  195. {*======================================================================*
  196. *  The common interface for the SANE library    *
  197. *======================================================================*}
  198.  
  199. {---------------------------------------------------
  200. * Conversions between numeric binary types.
  201. ---------------------------------------------------}
  202.  
  203. FUNCTION Num2Integer(x: Extended): INTEGER;
  204. FUNCTION Num2Longint(x: Extended): LONGINT;
  205. FUNCTION Num2Real(x: Extended): real;
  206. FUNCTION Num2Double(x: Extended): DOUBLE;
  207. FUNCTION Num2Extended(x: Extended): Extended;
  208. FUNCTION Num2Comp(x: Extended): Comp;
  209. PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
  210. FUNCTION Dec2Num(d: decimal): Extended;
  211. PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
  212. FUNCTION Str2Num(s: DecStr): Extended;
  213. PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  214. PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  215. PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
  216. FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  217. FUNCTION Rint(x: Extended): Extended;
  218. FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
  219. FUNCTION Logb(x: Extended): Extended;
  220. FUNCTION CopySign(x: Extended;y: Extended): Extended;
  221. FUNCTION NextReal(x: real;y: real): real;
  222. FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
  223. FUNCTION NextExtended(x: Extended;y: Extended): Extended;
  224. FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
  225. FUNCTION XpwrY(x: Extended;y: Extended): Extended;
  226. FUNCTION Compound(r: Extended;n: Extended): Extended;
  227. FUNCTION Annuity(r: Extended;n: Extended): Extended;
  228. FUNCTION RandomX(VAR x: Extended): Extended;
  229. FUNCTION ClassReal(x: real): NumClass;
  230. FUNCTION ClassDouble(x: DOUBLE): NumClass;
  231. FUNCTION ClassComp(x: Comp): NumClass;
  232. FUNCTION ClassExtended(x: Extended): NumClass;
  233. FUNCTION SignNum(x: Extended): INTEGER;
  234. FUNCTION NAN(i: INTEGER): Extended;
  235. PROCEDURE SetException(e: Exception;b: BOOLEAN);
  236. FUNCTION TestException(e: Exception): BOOLEAN;
  237. PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
  238. FUNCTION TestHalt(e: Exception): BOOLEAN;
  239. PROCEDURE SetRound(r: RoundDir);
  240. FUNCTION GetRound: RoundDir;
  241. PROCEDURE SetPrecision(p: RoundPre);
  242. FUNCTION GetPrecision: RoundPre;
  243. PROCEDURE SetEnvironment(e: environment);
  244. PROCEDURE GetEnvironment(VAR e: environment);
  245. PROCEDURE ProcEntry(VAR e: environment);
  246. PROCEDURE ProcExit(e: environment);
  247. FUNCTION Relation(x: Extended;y: Extended): RelOp;
  248.  
  249. {$ENDC}    { UsingSANE }
  250.  
  251. {$IFC NOT UsingIncludes}
  252.     END.
  253. {$ENDC}
  254.  
  255.